]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Delegate mode information to a dedicated object
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 16 May 2012 22:26:44 +0000 (00:26 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 May 2012 17:42:27 +0000 (19:42 +0200)
Rather than accessing global.session_type / global.session_mode
all over the place, delegate mode information to a dedicated
sessionMode object. While not very useful for now, we will replace
checks for a particular mode with checks for particular properties
that sessionMode defines based on global.session_mode.

https://bugzilla.gnome.org/show_bug.cgi?id=676156

js/Makefile.am
js/ui/main.js
js/ui/panel.js
js/ui/popupMenu.js
js/ui/sessionMode.js [new file with mode: 0644]
js/ui/status/keyboard.js

index e7751cce4c112a2d465ec0047d3cfebcb26cb91e..6b055365e4a841a46fafa05ded09d1e6c2e9c408 100644 (file)
@@ -67,6 +67,7 @@ nobase_dist_js_DATA =         \
        ui/messageTray.js       \
        ui/modalDialog.js       \
        ui/networkAgent.js      \
+       ui/sessionMode.js       \
        ui/shellEntry.js        \
        ui/shellMountOperation.js \
        ui/notificationDaemon.js \
index f7f46c25699066019f6ff7a1f70ab72054b2b1ce..b91ee4154acadd06308bd9aceece7b611988a440 100644 (file)
@@ -30,6 +30,7 @@ const NetworkAgent = imports.ui.networkAgent;
 const NotificationDaemon = imports.ui.notificationDaemon;
 const WindowAttentionHandler = imports.ui.windowAttentionHandler;
 const Scripting = imports.ui.scripting;
+const SessionMode = imports.ui.sessionMode;
 const ShellDBus = imports.ui.shellDBus;
 const TelepathyClient = imports.ui.telepathyClient;
 const WindowManager = imports.ui.windowManager;
@@ -56,6 +57,7 @@ let windowAttentionHandler = null;
 let telepathyClient = null;
 let ctrlAltTabManager = null;
 let recorder = null;
+let sessionMode = null;
 let shellDBusService = null;
 let modalCount = 0;
 let modalActorFocusStack = [];
@@ -159,6 +161,7 @@ function start() {
 
     Gio.DesktopAppInfo.set_desktop_env('GNOME');
 
+    sessionMode = new SessionMode.SessionMode();
     shellDBusService = new ShellDBus.GnomeShell();
 
     // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
@@ -210,7 +213,7 @@ function start() {
     xdndHandler = new XdndHandler.XdndHandler();
     ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();
     // This overview object is just a stub for non-user sessions
-    overview = new Overview.Overview({ isDummy: global.session_type != Shell.SessionType.USER });
+    overview = new Overview.Overview({ isDummy: sessionMode.sessionType != Shell.SessionType.USER });
     magnifier = new Magnifier.Magnifier();
     statusIconDispatcher = new StatusIconDispatcher.StatusIconDispatcher();
     panel = new Panel.Panel();
@@ -220,9 +223,9 @@ function start() {
     notificationDaemon = new NotificationDaemon.NotificationDaemon();
     windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
 
-    if (global.session_type == Shell.SessionType.USER)
+    if (sessionMode.sessionType == Shell.SessionType.USER)
         _createUserSession();
-    else if (global.session_type == Shell.SessionType.GDM)
+    else if (sessionMode.sessionType == Shell.SessionType.GDM)
         _createGDMSession();
 
     panel.startStatusArea();
@@ -231,7 +234,7 @@ function start() {
     keyboard.init();
     overview.init();
 
-    if (global.session_type == Shell.SessionType.USER)
+    if (sessionMode.sessionType == Shell.SessionType.USER)
         _initUserSession();
     statusIconDispatcher.start(messageTray.actor);
 
@@ -491,7 +494,7 @@ function loadTheme() {
 
     let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
 
-    if (global.session_type == Shell.SessionType.GDM)
+    if (sessionMode.sessionType == Shell.SessionType.GDM)
         theme.load_stylesheet(_gdmCssStylesheet);
 
     if (previousTheme) {
@@ -566,7 +569,7 @@ function _globalKeyPressHandler(actor, event) {
 
     // Other bindings are only available to the user session when the overview is up and
     // no modal dialog is present.
-    if (global.session_type == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
+    if (sessionMode.sessionType == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
         return false;
 
     // This isn't a Meta.KeyBindingAction yet
@@ -582,7 +585,7 @@ function _globalKeyPressHandler(actor, event) {
     }
 
     // None of the other bindings are relevant outside of the user's session
-    if (global.session_type != Shell.SessionType.USER)
+    if (sessionMode.sessionType != Shell.SessionType.USER)
         return false;
 
     switch (action) {
index 772bc77067ad7ced90d87dcedee36130748c3242..ab00237f4d5ae6ce48252810d49d54126a585f87 100644 (file)
@@ -962,7 +962,7 @@ const Panel = new Lang.Class({
         this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
 
         /* Button on the left side of the panel. */
-        if (global.session_type == Shell.SessionType.USER) {
+        if (Main.sessionMode.sessionType == Shell.SessionType.USER) {
             this._activitiesButton = new ActivitiesButton();
             this._activities = this._activitiesButton.actor;
             this._leftBox.add(this._activities);
@@ -976,7 +976,7 @@ const Panel = new Lang.Class({
         }
 
         /* center */
-        if (global.session_type == Shell.SessionType.USER)
+        if (Main.sessionMode.sessionType == Shell.SessionType.USER)
             this._dateMenu = new DateMenu.DateMenuButton({ showEvents: true });
         else
             this._dateMenu = new DateMenu.DateMenuButton({ showEvents: false });
@@ -984,7 +984,7 @@ const Panel = new Lang.Class({
         this._menus.addMenu(this._dateMenu.menu);
 
         /* right */
-        if (global.session_type == Shell.SessionType.GDM) {
+        if (Main.sessionMode.sessionType == Shell.SessionType.GDM) {
             this._status_area_order = GDM_STATUS_AREA_ORDER;
             this._status_area_shell_implementation = GDM_STATUS_AREA_SHELL_IMPLEMENTATION;
         } else {
index 09a9b737dc1e316043756191cb9394475268fda7..1ec5e55eff6a4721cbe6daee4b756cefd42d8706 100644 (file)
@@ -889,7 +889,7 @@ const PopupMenuBase = new Lang.Class({
 
     addSettingsAction: function(title, desktopFile) {
         // Don't allow user settings to get edited unless we're in a user session
-        if (global.session_type != Shell.SessionType.USER)
+        if (Main.sessionMode.sessionType != Shell.SessionType.USER)
             return null;
 
         let menuItem = this.addAction(title, function() {
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
new file mode 100644 (file)
index 0000000..0cc2c14
--- /dev/null
@@ -0,0 +1,25 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Lang = imports.lang;
+const Shell = imports.gi.Shell;
+
+const Params = imports.misc.params;
+
+const DEFAULT_MODE = 'user';
+
+const _modes = {
+    'gdm': { sessionType: Shell.SessionType.GDM },
+
+    'user': { sessionType: Shell.SessionType.USER }
+};
+
+const SessionMode = new Lang.Class({
+    Name: 'SessionMode',
+
+    _init: function() {
+        let params = _modes[global.session_mode];
+
+        params = Params.parse(params, _modes[DEFAULT_MODE]);
+        Lang.copyProperties(params, this);
+    }
+});
index 6299442880d0514533afaedd9ca48f0acda2dcde..c5400bc6b78983d098bed0b1444481dec3cf15b0 100644 (file)
@@ -63,7 +63,7 @@ const XKBIndicator = new Lang.Class({
 
         this._syncConfig();
 
-        if (global.session_type == Shell.SessionType.USER) {
+        if (Main.sessionMode.sessionType == Shell.SessionType.USER) {
             this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
             this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
                 Main.overview.hide();